/**
 * Copyright 2009 the original author or authors.
 *
 * Licensed under the GPL License, Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.guardianapis.api.exceptions;

public class ContentException extends Exception {

	/*******************************************************************************
	 * Constants
	 *******************************************************************************/

	private static final long serialVersionUID = 2349187521746924590L;

	/*******************************************************************************
	 * Properties
	 *******************************************************************************/

	private String message;
	private Throwable cause;
	
	/*******************************************************************************
	 * Constructors
	 *******************************************************************************/

	protected ContentException() {
		// Sub-classes must correctly set the message and optionally the cause using protected setters
	}
	
	public ContentException(String pMessage) {
		this.message = pMessage;
	}

	public ContentException(String pMessage, Throwable pCause) {
		this.message = pMessage;
		this.cause = pCause;
	}

	/*******************************************************************************
	 * Overriding Exception Methods
	 *******************************************************************************/
	
	@Override
	public String getMessage() {
		return this.message;
	}
	
	@Override
	public Throwable getCause() {
		return this.cause;
	}
	
	/*******************************************************************************
	 * Protected Setters
	 *******************************************************************************/

	protected void setMessage(String pMessage) {
		this.message = pMessage;
	}
	
	protected void setCause(Throwable pCause) {
		this.cause = pCause;
	}
	
}
